package com.wejoy.video.middle.station.data.util;

import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Assert;

/**
 * 参数校验
 * @author admin
 */
public class WJAssert extends Assert {

    /**
     * 判断是否在规定的长度内
     *
     * @param str
     * @param minLength
     * @param maxLength
     * @param message
     */
    public static void isRange(String str, int minLength, int maxLength, String message) {
        if (StringUtils.isEmpty(str)) {
            throw new IllegalArgumentException(message);
        }
        if (str.length() < minLength || str.length() > maxLength) {
            throw new IllegalArgumentException(message);
        }
    }

    /**
     * 判断是否超过最大限制
     * <p>判定目标不可以为空</p>
     *
     * @param str
     * @param maxLength
     * @param message
     */
    public static void isMaxLength(String str, int maxLength, String message) {
        limitMaxLength(str, false, maxLength, message);
    }

    /**
     * 判断字符串是否为null或空字符串
     * <p>判定目标不可以为空</p>
     *
     * @param str
     * @param message
     */
    public static void notBlank(String str, String message) {
        if (StringUtils.isBlank(str)) {
            throw new IllegalArgumentException(message);
        }
    }

    /**
     * 判断是否超过最大限制
     *
     * @param str       判定目标
     * @param nullAble  是否可空
     * @param maxLength 最大长度
     * @param message   提示信息
     */
    public static void limitMaxLength(String str, boolean nullAble, int maxLength, String message) {
        if (!nullAble) {
            if (StringUtils.isEmpty(str) || str.length() > maxLength) {
                throw new IllegalArgumentException(message);
            }
        } else {
            if (str != null && str.length() > maxLength) {
                throw new IllegalArgumentException(message);
            }
        }
    }

    /**
     * 判断地址
     * @param str
     * @param message
     */
    public static void isMatchesLiveUrl(String str, String message) {
        String regex = "^(https?|ftp|file|http?|rtmp?)://\\S+";
        if(!str.matches(regex)) {
            throw new IllegalArgumentException(message);
        }
    }

}
